package com.ypj.indusynergyems.toolkit;



import com.ypj.indusynergyems.dao.entity.MenuEntity;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单工具类
 */
public class MenuUtils {

    //获取所有的一级菜单列表,父菜单对象为null
   public static List<MenuEntity> getTopMenus(List<MenuEntity> menus){
       List<MenuEntity> topMenus = new ArrayList<>();//存放所有一级菜单的列表
       for (MenuEntity menu : menus) {  //遍历所有菜单
           if (menu.getParent()==null){ //当前菜单的父菜单对象为null,就是一级菜单
               topMenus.add(menu);
           }
       }
       return topMenus;
   }

    //获取所有的二级菜单列表，父菜单对象不为null,父菜单对象的父菜单为null
    public static List<MenuEntity> getSecondMenus(List<MenuEntity> menus){
        List<MenuEntity> secondMenus = new ArrayList<>();//存放所有二级菜单的列表
        for (MenuEntity menu : menus) {  //遍历所有菜单
            //当前父菜单对象不为null,父菜单对象的父菜单为null
            if (menu.getParent()!=null&&menu.getParent().getParent()==null){
                secondMenus.add(menu);
            }
        }
        return secondMenus;
    }

    //获取所有的三级菜单列表
    public static List<MenuEntity> getThirdMenus(List<MenuEntity> menus){
        List<MenuEntity> thirdMenus = new ArrayList<>();//存放所有三级菜单的列表
        for (MenuEntity menu : menus) {  //遍历所有菜单
            //当前菜单的父菜单对象不为null,父菜单对象的父菜单也不为null
            if (menu.getParent()!=null&&menu.getParent().getParent()!=null){
                thirdMenus.add(menu);
            }
        }
        return thirdMenus;
    }

    //根据菜单url获取菜单id  参数1：请求路径  参数2：登录用户可以操作的二级菜单列表
    public static Integer getMenuIdByUrl(String url, List<MenuEntity> menuList) {
       //如果url为空，返回id为0
       if (url==null){
            return 0;
        }
       //遍历菜单列表
        for (MenuEntity menu : menuList) {
            //找到包含url的菜单对象
            if (menu.getUrl() .equals(url)){
                return Math.toIntExact(menu.getMenuId());
            }
        }
        return 0;
    }


    //获取某个菜单id的所有子分类(三级菜单)  参数1：二级菜单id  参数：登录用户可以操作的所有菜单列表
    public static List<MenuEntity> getChild(Integer parentId,List<MenuEntity> menuList) {
       List<MenuEntity> child = new ArrayList<>();
       if (parentId!=0){
           //遍历所有菜单列表
           for (MenuEntity menu : menuList) {
               //通过二级菜单id查询它下面的三级菜单
                if (menu.getParent()!=null && menu.getParent().getMenuId() == parentId){
                    child.add(menu);
                }
           }
       }
       return  child;
    }
}
